Protocol duplexer and protocol duplexing method

ABSTRACT

A method of duplicating protocol for making identical the order of reception and contents of packets on the two computers of a duplicated computer system with respect to packets of specific types of communication. On the first computer, each packet taken in is checked to determine whether the packet is a packet of the specific types of communication before protocol processing. If the packet is a packet of the specific types of communication, the packet is passed to the protocol processing process and added to a virtual queue created in its shared memory. On the second computer, each packet taken in is checked to determine whether the packet is a packet of the specific types of communication before protocol processing. If the packet is a packet of the specific types of communication, the packet is discarded, and the one at the head of the virtual queue in its shared memory is passed to the protocol processing process.

FIELD OF THE INVENTION

[0001] The present invention generally relates to a duplicated computersystem, and in particular to the technology for duplicating protocol ona duplicated computer system.

BACKGROUND

[0002] There are various conventional methods of constructing aduplicated computer system using two computers each connected to anetwork. In such architectures, however, the order of reception ofpackets which are sent from the same sender and received by the twocomputers are not always the same. Although no problem occurs in usesfor which the order of reception of packets does not matter if answitchover between the computers occurs in case of failure, it is notenough just to duplicate the hardware for uses in which the order ofreception of packets matters.

[0003] The present invention was made to solve this problem. The objectof the present invention is to provide a method of duplicating protocolso that the order of reception of packets and the contents of them onthe two computers of a duplicated computer system are made identical forpackets of specific types of communication, and a duplicated computersystem with protocols duplicated in this manner.

SUMMARY OF THE INVENTION

[0004] The invention of claim 1 is a protocol duplicating configurationfor making identical the order of reception and contents of packets onfirst and second computers which are connected to a network, have sharedmemories forming the same address space, and make up a duplicatedcomputer system for packets of specific types of communication,characterized by having the following means on each of the first andsecond computers: queue holding means for storing packets to beprocessed in the order of reception; protocol processing means that isexecuted in response to reception of packets from the network; temporaryqueue holding means for temporally storing the packets having beenprocessed by the protocol processing means; and virtual queue holdingmeans for storing packets of the specific types of communication.

[0005] The invention of claim 2 is characterized in that the protocolprocessing means has packet taking-in means which takes in packets fromthe queue holding means and determines whether each packet taken in is apacket of the specific types of communication, protocol processing meansfor performing protocol processing on the packet, and packet outputmeans for outputting the packet having been processed by the protocolprocessing means to the temporary queue holding means, and the protocolprocessing means on the first computer takes in the packets stored inthe queue holding means by means of the packet taking-in means anddetermines whether each packet taken in is a packet of the specifictypes of communication, and if the packet is not a packet of thespecific types of communication, performs the protocol processing on thepacket by means of the protocol processing means and outputs the packetto the temporary queue holding means by means of the packet outputmeans.

[0006] The invention of claim 3 is characterized in that the protocolprocessing means on the first computer takes in the packets stored inthe queue holding means by means of the packet taking-in means anddetermines whether each packet taken in is a packet of the specifictypes of communication, and if the packet is a packet of specific typesof communication, performs the protocol processing on the packet bymeans of the communication processing means and in addition stores thepacket in the virtual queue holding means.

[0007] The invention of claim 4 is characterized in that the protocolprocessing means on the second computer takes in the packets stored inthe queue holding means by means of the packet taking-in means anddetermines whether each packet taken in is a packet of the specifictypes of communication, and if the packet is a packet of specific typesof communication, discards the packet and passes the packet at the headof the virtual queue to the communication processing means.

[0008] The invention of claim 5 is characterized in that the protocolprocessing means on the second computer takes in the packets stored inthe queue holding means in order by means of the packet taking-in meansand determines whether each packet taken in is a packet of the specifictypes of communication, and if the packet is a packet of the specifictypes of communication, compares the packet with the packet at the headof the virtual queue, and only if both packets are identical, discardsthe packet taken in and passes the packet at the head of the virtualqueue to the communication processing means.

[0009] The invention of claim 6 is a method of duplicating protocol formaking identical the order of reception and contents of packets on firstand second computers which are connected to a network, have sharedmemories forming the same address space and make up a duplicatedcomputer system for packets of specific types of communication,characterized by having the following steps executed on each computer:storing packets to be processed in a queue in order of reception;executing protocol processing in response to reception of packets fromthe network; temporally storing packets having been subjected to theprotocol processing in a temporary queue; and virtual queue holdingmeans for storing packets of the specific types of communication.

[0010] The invention of claim 7 is characterized in that the protocolprocessing step comprises: packet taking-in step which takes in packetsfrom the queue and checks each packet taken in to determine whether thepacket is a packet of the specific types of communication; protocolprocessing step which performs the protocol processing on the packetfrom the packet taking-in step; and packet output step which outputs thepacket having been subjected to the protocol processing step to thetemporary queue; and takes in the packets stored in the queue and checkseach packet taken in to determine whether the packet is a packet of thespecific types of communication by the packet taking-in step on thefirst computer, and if the packet is not a packet of the specific typesof communication, performs the protocol processing on the packet by thecommunication processing step and outputting the packet to the temporaryqueue by the packet output step.

[0011] The invention of claim 8 is characterized by taking in thepackets stored in the queue and checking each packet taken in todetermine whether the packet is a packet of the specific types ofcommunication by the packet taking-in step on the first computer, and ifthe packet is a packet of the specific types of communication,performing the protocol processing on the packet by the communicationprocessing step and in addition storing the packet in the virtual queue.

[0012] The invention of claim 9 is characterized by taking in thepackets stored in the queue in order and checks each packet taken in todetermine whether the packet is a packet of the specific types ofcommunication by the packet taking-in step on the second computer,and ifthe packet is a packet of the specific types of communication,discarding the packet and passing the packet at the head of the virtualqueue to the communication processing step.

[0013] The invention of claim 10 is characterized by taking in thepackets stored in the queue and checking each packet taken in todetermine whether the packet is a packet of the specific types ofcommunication by the packet taking-in step on the second computer, andif the packet is a packet of the specific types of communication,comparing the packet with the packet at the head of the virtual queue,and only if both packets are identical, discarding the packet andpassing the packet at the head of the virtual queue to the communicationprocessing means.

BRIEF DESCRIPTION OF THE DRAWINGS

[0014]FIG. 1 is a simplified block diagram that shows only the partnecessary for explanation of a duplicated computer system to which themethod of duplicating protocol according to the present invention can beapplied.

[0015]FIG. 2 is a diagram illustrating the principle of the method ofduplicating protocol according to the present invention.

DESCRIPTION OF PREFERRED EMBODIMENTS

[0016]FIG. 1 is a simplified block diagram that shows only the partnecessary for explanation of a duplicated computer system to which themethod of duplicating protocol according to the present invention can beapplied. In FIG. 1, a duplicated computer system 1 consist of twocomputers 10 and 20 that are connected to a network.

[0017] The computers 10 and 20 may have the same or differentconfigurations depending on use. Since the necessary components arecommon to both computers 10 and 20, only those components are describedbelow. Each of the computers 10 and 20 may be any type of computer aslong as it has a processing circuit 11, 21 including a microprocessorand a memory not shown in the Figure, NIC (Network Interface Card) 12,22 serving as the interface to the network, shared memory 13, 23 usedfor communication between the computers 10 and 20.

[0018] The NICs 12 and 24 are assigned the same MAC (Media AccessControl) address Amac so that the computers 10 and 20 appear as a singlecomputer to the network. The shared memories 13 and 23 are dual-portRAMs (Random Access Memories) used for making it possible for thecomputers 10 and 20 to have the same queue of packets of specific typesof communication whose order of reception and contents must be identicalon the first and second computers, and have the same addresses assignedto form the same address spaces (referred to as shared memory spaces) onthe individual computers. The shared memories 13 and 23 are configuredso that, when either computer 10 or 20 writes data to its own sharedmemory space, the same data is written to both shared memories 13 and 23substantially at the same time.

[0019] Next, the operation of the duplicated computer system 1 isdescribed below. The duplication of protocol according to the presentinvention is to forcibly make the order of reception and contents ofpackets on one computer identical to those of packets on the othercomputer with respect to packets sent from specified communicationpartners. For convenience sake, the case wherein the order of packetssubjected to protocol processing on the computer 20 is made identical tothat on the computer 10 is described below. The computer 10 is thereforereferred to as the primary computer, and the computer 20 as thesecondary computer.

[0020]FIG. 2 is a diagram illustrating the principle of the method ofduplicating protocol according to the present invention. In FIG. 2,boxes 100 and 200 show protocol processing performed on the computers 10and 20 in response to reception of packets from the network, forexample. The protocol may be any one suitable for the use of thecomputer system 1, for example TCP (Transfer Control Protocol), but is astandard protocol with part of it modified as described later in detail.Assigned reference numbers 30 and 40 are queues in which packets to beprocessed by the protocol processing 100 and 200 are held in order.Assigned reference numbers 32 and 42 are queues in which packets havingbeen processed by the protocol processing 100 and 200 are temporarilyheld. Since the same data are written to the shared memories 13 and 23as described above, only one of them is shown in FIG. 2. In each of theshared memories 13 and 23, another queue 50 (referred to as a virtualqueue) for holding only the packets from specified communicationpartners is created.

[0021] In actual operation, a packet is taken in from the queue 30 andchecked to determine whether the packet is a packet (relevant packet)used in specific types of communication (relevant communication) forwhich the duplication of protocol according to the present invention ismade, by queue taking-in processing 110 of the protocol processing 100on the primary server 10. In the case where the duplicated computersystem 1 receives packets from a network and the protocol is TCP, forexample, whether the packet taken in is a relevant packet can bedetermined using the source MAC address, source IP address, and sourceport address in the packet, for example.

[0022] Further, the information (filtering information) used fordetermining whether the packet taken in is a relevant packet must not belimited to the above-mentioned source MAC address, source IP address,and source port address, but may be any information contained in packetsas long as it can be used to identify packets. Moreover, since the typesof communication for which the order of reception and contents ofpackets on the two computer must be made identical are expected to belimited depending on the use of the system 1, it may be preferable thatthe information used for identifying relevant types of communication orpackets is stored in the nonvolatile memory of each computer beforehandby the manufacture, vendor or system administrator of the duplicatedcomputer system 1.

[0023] In the queue taking-in process 110 on the computer 10, whetherthe packet taken in is a relevant packet is determined using thefiltering information as described above. If the packet is not arelevant packet, it is simply passed to protocol processing 130. If thepacket is a relevant packet, it is passed to the protocol processing130, and also added to the virtual queue 50 in the shared memory 13. Bythis operation, only relevant packets are held in the virtual queue 50.

[0024] On the other hand, in the queue taking-in process 210 on thecomputer 20, the packet taken in is checked to determine whether thepacket is a relevant packet in the same manner as in the queue taking-inprocess 110. If the packet taken in is not a relevant packet, it issimply passed to the protocol processing 250. If the packet is arelevant packet, either of the following two methods may be used: (1)Discarding the packet taken in and passing the packet at the head of thevirtual queue 50 to the communication processing 250, and (2) Comparingthe packet taken in with the one at the head of the virtual queue 50(230) and, only if they are identical, discarding the packet taken inand passing the one at the head of the virtual queue 50 to the protocolprocessing 250.

[0025] By the processing described above, the same packets pass throughthe queues 32 and 42 in the same order with respect to relevant packets.

[0026] The present invention therefore can provide a method ofduplicating protocol so that the order of reception of packets and thecontents of them on the two computers of a duplicated computer systemare made identical for packets of specific types of communication, and aduplicated computer system with protocols duplicated in this manner.

1. Protocol duplicating configuration for making identical the order ofreception and contents of packets on first and second computers whichare connected to a network, have shared memories forming the sameaddress space, and make up a duplicated computer system for packets ofspecific types of communication, characterized by having the followingmeans on each of the first and second computers: queue holding means forstoring packets to be processed in the order of reception; protocolprocessing means that is executed in response to reception of packetsfrom the network; temporary queue holding means for temporally storingthe packets having been processed by the protocol processing means; andvirtual queue holding means for storing packets of the specific types ofcommunication.
 2. The protocol duplicating configuration of claim 1,wherein the protocol processing means has packet taking-in means whichtakes in packets from the queue holding means and determines whethereach packet taken in is a packet of the specific types of communication,protocol processing means for performing protocol processing on thepacket, and packet output means for outputting the packet having beenprocessed by the protocol processing means to the temporary queueholding means, and the protocol processing means on the first computertakes in the packets stored in the queue holding means by means of thepacket taking-in means and determines whether each packet taken in is apacket of the specific types of communication, and if the packet is nota packet of the specific types of communication, performs the protocolprocessing on the packet by means of the protocol processing means andoutputs the packet to the temporary queue holding means by means of thepacket output means.
 3. The protocol duplicating configuration of claim1 or 2, wherein the protocol processing means on the first computertakes in the packets stored in the queue holding means by means of thepacket taking-in means and determines whether each packet taken in is apacket of the specific types of communication, and if the packet is apacket of the specific types of communication, performs the protocolprocessing on the packet by means of the communication processing meansand in addition stores the packet in the virtual queue holding means. 4.The protocol duplicating configuration of claim 1, wherein the protocolprocessing means on the second computer takes in the packets stored inthe queue holding means by means of the packet taking-in means anddetermines whether each packet taken in is a packet of the specifictypes of communication, and if the packet is a packet of the specifictypes of communication, discards the packet and passes the packet at thehead of the virtual queue to the communication processing means.
 5. Theprotocol duplicating configuration of claim 1, wherein the protocolprocessing means on the second computer takes in the packets stored inthe queue holding means in order by means of the packet taking-in meansand determines whether each packet taken in is a packet of the specifictypes of communication, and if the packet is a packet of the specifictypes of communication, compares the packet with the packet at the headof the virtual queue, and only if both packets are identical, discardsthe packet taken in and passes the packet at the head of the virtualqueue to the communication processing means.
 6. A method of duplicatingprotocol for making identical the order of reception and contents ofpackets on first and second computers which are connected to a network,have shared memories forming the same address space and make up aduplicated computer system for packets of specific types ofcommunication, characterized by having the following steps executed oneach computer: storing packets to be processed in a queue in order ofreception; executing protocol processing in response to reception ofpackets from the network; temporally storing packets having beensubjected to the protocol processing in a temporary queue; and virtualqueue holding means for storing packets of the specific types ofcommunication.
 7. The method of duplicating protocol of claim 6, whereinthe protocol processing comprises: packet taking-in step which takes inpackets from the queue and checks each packet taken in to determinewhether the packet is a packet of the specific types of communication;protocol processing step which performs the protocol processing on thepacket from the packet taking-in step; and packet output step whichoutputs the packet having been subjected to the protocol processing stepto the temporary queue; and takes in the packets stored in the queue andchecks each packet taken in to determine whether the packet is a packetof the specific types of communication by the packet taking-in step onthe first computer, and if the packet is not a packet of the specifictypes of communication, performs the protocol processing on the packetby the communication processing step and outputs the packet to thetemporary queue by the packet output step.
 8. The method of duplicatingprotocol of claim 6 or 7, characterized by taking in the packets storedin the queue and checking each packet taken in to determine whether thepacket is a packet of the specific types of communication by the packettaking-in step on the first computer, and if the packet is a packet ofthe specific types of communication, performing the protocol processingon the packet by the communication processing step and in additionstoring the packet in the virtual queue.
 9. The method of duplicatingprotocol of claim 6, characterized by taking in the packets stored inthe queue in order and checks each packet taken in to determine whetherthe packet is a packet of the specific types of communication by thepacket taking-in step on the second computer, and if the packet is apacket of the specific types of communication, discarding the packet andpassing the packet at the head of the virtual queue to the communicationprocessing step.
 10. The method of duplicating protocol of claim 6,characterized by taking in the packets stored in the queue and checkingeach packet taken in to determine whether the packet is a packet of thespecific types of communication by the packet taking-in step on thesecond computer, and if the packet is a packet of the specific types ofcommunication, comparing the packet with the packet at the head of thevirtual queue, and only if both packets are identical, discarding thepacket and passing the packet at the head of the virtual queue to thecommunication processing means.